package com.xjlsoft.weather.service;


import java.util.List;
import java.util.Map;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xjlsoft.weather.entity.QueryLog;
import com.xjlsoft.weather.entity.RequestApi;
import com.xjlsoft.weather.entity.WeatherTask;
import com.xjlsoft.weather.enums.WeatherTaskEnum;

/**
 * 定时任务接口
 *
 * @author 码农猿
 */
public interface WeatherTaskService  extends IService<WeatherTask>{

    /**
     * 所有任务列表
     */
    public List<WeatherTask> taskList();

    /**
     * 根据任务key 启动任务
     */
    public Boolean start(String taskKey);

    /**
     * 根据任务key 停止任务
     */
    public Boolean stop(String taskKey);
    
    
    
    /**
     * 启动关联 的定时任务
     * 
     * */
    public Boolean startByWeatherTask(WeatherTask wt);
    
    /**
     * 返回 关联的  定时任务 枚举
     * 
     * */
    public WeatherTaskEnum getByWeatherTask(WeatherTask wt);

    /**
     * 根据任务key 重启任务
     */
    public  Boolean restart(String taskKey);


    /**
     * 程序启动时初始化  ==> 启动所有正常状态的任务
     */
    public void initAllTask(List<WeatherTask> scheduledTaskBeanList);


    /**
     * 打印正在启动的任务
     */
    public  String printlnTask();
    
    /**
	 * 
	 * 产生   产生请求地面、辐射、气溶胶 数据 请求   处理逻辑
	 *  querylog表中的  timeRange  (日期查询范围 是动态变化的 )
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 *     
	 * </br>
	 * @return map </br>
	 *        key       value </br>
	 *        querylog  querylog对象 </br>
	 *        initFlag  boolean值   （含有  是否是 第一次 请求 数据）
	 *        stopTaskFlag boolean 值  关闭定时任务标识
	 * */
	public Map<String,Object>  createQuerylog(RequestApi requestapi,WeatherTask  wt) throws Exception;

    /**
	 * 
	 * 产生  分钟 数据 请求   处理逻辑
	 *  querylog表中的  timeRange  (日期查询范围 是动态变化的 )
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 *     
	 * </br>
	 * @return map </br>
	 *        key       value </br>
	 *        querylog  querylog对象 </br>
	 *        initFlag  boolean值   （含有  是否是 第一次 请求 数据）
	 *        stopTaskFlag boolean 值  关闭定时任务标识
	 * */
	public Map<String,Object>  createQuerylogMinData(RequestApi requestapi,WeatherTask  wt) throws Exception;
	
	
	
	/**
	 * 
	 * 产生   产生请求地面、辐射、气溶胶 数据 请求   处理逻辑
	 *  querylog表中的  timeRange  (日期查询范围 是动态变化的 )
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 *     
	 * </br>
	 * @return map </br>
	 *        key       value </br>
	 *        querylog  List<QueryLog>  ql集合 </br>
	 *        initFlag  boolean值   （含有  是否是 第一次 请求 数据）
	 * */
	public QueryLog createQuerylogTimin(RequestApi requestapi,WeatherTask wt) throws Exception;
	
	
	/**
	 * 
	 * 产生  分钟 数据 请求   处理逻辑
	 *  querylog表中的  timeRange  (日期查询范围 是动态变化的 )
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 *     
	 * </br>
	 * @return map </br>
	 *        key       value </br>
	 *        querylog  List<QueryLog>  ql集合 </br>
	 *        initFlag  boolean值   （含有  是否是 第一次 请求 数据）
	 * */
	public QueryLog createQuerylogTiminMinData(RequestApi requestapi,WeatherTask wt) throws Exception;
	
	
	/**
	 * 
	 * 产生    高空 数据 请求  处理逻辑
	 *  querylog表中的  times  (日期查询是动态变化  每次 只保存一个   格式  为   年月日0时0分0秒    每次日期增加)
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 *     
	 * </br>
	 * @return List<QueryLog>  </br>
	 * */
	public QueryLog  createHighDataQuerylogTimin(RequestApi requestapi,WeatherTask wt) throws Exception;
	
	/**
	 * 
	 * 产生    高空 数据 请求  处理逻辑
	 *  querylog表中的  times  (日期查询是动态变化  每次 只保存一个   格式  为   年月日0时0分0秒    每次日期增加)
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 *     
	 * </br>
	 * @return List<QueryLog>  </br>
	 * */
	public QueryLog  createRadiationMinQuerylogTimin(RequestApi requestapi,WeatherTask wt) throws Exception;
	
	/**
	 *  
	 * 初始化 地面、辐射、气溶胶 数据 请求   处理逻辑
	 *  querylog表中的  timeRange  (日期查询范围 是动态变化的 )
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 * 
	 * */
	public Map<String,Object>  inintCreateQuerylog(RequestApi requestapi,WeatherTask  wt) throws Exception;

	
	
	
	/**
	 * 
	 * 产生    高空 数据 请求  处理逻辑
	 *  querylog表中的  times  (日期查询是动态变化  每次 只保存一个   格式  为   年月日0时0分0秒    每次日期增加)
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 *     
	 * </br>
	 * @return map </br>
	 *        key       value </br>
	 *        querylog  List<QueryLog>  ql集合 </br>
	 *        initFlag  boolean值   （含有  是否是 第一次 请求 数据）
	 * */
	public Map<String,Object>  createHighDataQuerylog(RequestApi requestapi,WeatherTask  wt) throws Exception;
	
	/**
	 * 
	 * 产生    高空 数据 请求  处理逻辑
	 *  querylog表中的  times  (日期查询是动态变化  每次 只保存一个   格式  为   年月日0时0分0秒    每次日期增加)
	 *     timerange_star 开始查询时间    timerange_end 结束查询时间 
	 *     
	 * </br>
	 * @return map </br>
	 *        key       value </br>
	 *        querylog  List<QueryLog>  ql集合 </br>
	 *        initFlag  boolean值   （含有  是否是 第一次 请求 数据）
	 * */
	public Map<String,Object>  createRadiationMinQuerylog(RequestApi requestapi,WeatherTask  wt) throws Exception;

	
	/**
	 * 
	 * 初始化 高空 数据 请求 处理逻辑
     * @return map </br>
	 *        key       value </br>
	 *        querylog  List<QueryLog>  ql集合 </br>
	 *        initFlag  boolean值   （含有  是否是 第一次 请求 数据）
	 * 
	 * */
	public Map<String,Object>  inintHighDataCreateQuerylog(RequestApi requestapi,WeatherTask  wt) throws Exception;
	
	/**
	 * 
	 * 初始化 辐射分钟 数据 请求 处理逻辑
     * @return map </br>
	 *        key       value </br>
	 *        querylog  List<QueryLog>  ql集合 </br>
	 *        initFlag  boolean值   （含有  是否是 第一次 请求 数据）
	 * 
	 * */
	public Map<String,Object>  inintRadiationMinCreateQuerylog(RequestApi requestapi,WeatherTask  wt) throws Exception;
	
	
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求 地面  数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveGroundDataJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求 地面  数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveGroundPreJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求 气溶胶  数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveAerosolDataJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
	
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求 高空  数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveHighDataJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
	
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求 辐射 数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveArdiationDataJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
	
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求   数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveGroundProJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求 数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveGroundOtherJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求 数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveGroundTemJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
	
	/**
	 * 
	 * 请求数据处理逻辑 <br>
	 * 向接口 请求 数据  请成功后 先保存为txt文档，在保存到数据库中
	 * 
	 * @param querylog
	 * @param requestapi
	 * @param initFalg  是否是 第一次请求数据    如果是第一次请求数据，对于部分回应值 只保存 一次
	 * 
	 * */
	public void saveRadiationMinJson(QueryLog querylog,RequestApi requestapi,boolean initFalg) throws Exception;
}